package qc.module.iot.entity;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import qc.common.core.enums.CommunicationChannelTypeEnum;
import qc.common.core.enums.ResourceStatusFlagEnum;
import qc.common.core.enums.iot.IotPacketsDataProtocolEnum;
import qc.common.core.enums.iot.IotPacketsTransmitProtocolEnum;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * IotChannel
 *
 * @author QuCheng Tech
 * @since 2025/11/19
 */
@Data
@TableName("iot_channel")
public class IotChannel implements Serializable, Cloneable {
    /**
     * 信道ID；手动编码为ID，方便同步后保持唯一
     */
    @TableId
    private String id;
    /**
     * 信道名称;推荐使用TCP/UDP+端口号
     */
    private String name;
    /**
     * 信道类型;对应枚举CommunicationChannelTypeEnum
     */
    private CommunicationChannelTypeEnum channeltype;
    /**
     * 端口;网络端口或串口等
     */
    private String port;
    /**
     * 参数;设置如串口波特率等参数
     */
    private String param;
    /**
     * 传输协议;对应枚举IotPacketsTransmitProtocolEnum
     */
    private IotPacketsTransmitProtocolEnum transmitprotocol;
    /**
     * 数据协议;对应枚举IotPacketsDataProtocolEnum
     */
    private IotPacketsDataProtocolEnum dataprotocol;
    /**
     * 描述信息
     */
    private String description;
    /**
     * 状态;对应枚举ResourceStatusFlagEnum
     */
    private ResourceStatusFlagEnum flag;
    /**
     * 写入时间
     */
    private LocalDateTime intm;
    /**
     * 最后更新时间;最后更新通道配置信息的时间
     */
    private LocalDateTime uptm;
    /**
     * 最后通讯时间;最后一次完成收发数据通讯的时间，包含接收数据、心跳或注册
     */
    private LocalDateTime cmtm;
    /**
     * 最后报文时间;最后一次收到数据帧的时间，接收时间
     */
    private LocalDateTime pcktm;
}
